package icu.qx.gbs.mapper;

import icu.qx.gbs.domain.GbsGood;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 物品 通过 is_material 区分物料和产品Mapper接口
 *
 * @author yong
 * @date 2024-06-06
 */
public interface GbsGoodMapper {
    /**
     * 查询物品 通过 is_material 区分物料和产品
     *
     * @param pdCode 物品 通过 is_material 区分物料和产品主键
     * @return 物品 通过 is_material 区分物料和产品
     */
    GbsGood selectGbsGoodByPdCode(String pdCode);

    /**
     * 查找没有工艺路线的产品
     */
    List<GbsGood> selectGbsGoodNoRoute();

    List<GbsGood> selectGbsGoodListByPdCode(String[] pdCodes);

    List<GbsGood> selectGbsGoodByRouteCode(@Param("routeCode") String routeCode);

    /**
     * 查询物品 通过 is_material 区分物料和产品列表
     *
     * @param gbsGood 物品 通过 is_material 区分物料和产品
     * @return 物品 通过 is_material 区分物料和产品集合
     */
    List<GbsGood> selectGbsGoodList(GbsGood gbsGood);

    /**
     * 新增物品 通过 is_material 区分物料和产品
     *
     * @param gbsGood 物品 通过 is_material 区分物料和产品
     * @return 结果
     */
    int insertGbsGood(GbsGood gbsGood);

    /**
     * 修改物品 通过 is_material 区分物料和产品
     *
     * @param gbsGood 物品 通过 is_material 区分物料和产品
     * @return 结果
     */
    int updateGbsGood(GbsGood gbsGood);

    int updateGbsGoodRoute(GbsGood gbsGood);

    /**
     * 删除物品 通过 is_material 区分物料和产品
     *
     * @param pdCode 物品 通过 is_material 区分物料和产品主键
     * @return 结果
     */
    int deleteGbsGoodByPdCode(String pdCode);

    /**
     * 批量删除物品 通过 is_material 区分物料和产品
     *
     * @param pdCodes 需要删除的数据主键集合
     * @return 结果
     */
    int deleteGbsGoodByPdCodes(String[] pdCodes);
}
